﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Dir
{
    class Program
    {
        static void Main(string[] args)
        {
           


            CmdParams cmdParams = new CmdParams(new string[] { "fd", "findex", "f", "fn", "l" },
                                               new string[] { "txt", "css", "help" },
                                               args);

            string path, path2; // путь к файлу, путь к дирректории 
            string pathdir, pathIndex; //путь к обрабатываемой директории, путь к индексному файоу 
            string ext;
            if (cmdParams.IsExistsNamedParam("help") || cmdParams.IsExistsNamedParam("f") || cmdParams.IsExistsNamedParam("fd") || cmdParams.IsExistsNamedParam("fidex")
                || cmdParams.IsExistsNamedParam("l"))
            {
                if (args == null || cmdParams.IsExistsNamedParam("help"))
                {
                    if (File.Exists("help.txt"))
                    {
                        StreamReader sr = new StreamReader("help.txt", Encoding.Default);
                        Console.WriteLine(sr.ReadToEnd());

                    }
                    else
                    {
                        Console.WriteLine("HELP for codeformat2html");
                        Console.WriteLine("-f [диск][каталог][имя файла c расширением cpp, cs, pas] -fn[диск][каталог]");
                        Console.WriteLine("-fd [диск][каталог] -findex [диск][каталог] -l [расширение]");
                        Console.WriteLine("ФЛАГИ");
                        Console.WriteLine("-txt создание текстового файла с обработанным кодом");
                        Console.WriteLine("-help вызов справки");
                        Console.WriteLine("-сss выбор стиля");
                        Console.WriteLine("-l выбор языка\n [.pas]\n [.cs]\n [.cpp]\n");
                    }
                }

                if (cmdParams.IsExistsNamedParam("f"))
                {
                    path = cmdParams["f"];
                    ext = Path.GetExtension(path);

                    if (cmdParams.IsExistsNamedParam("fn"))
                        path2 = cmdParams["fn"];
                    else
                        path2 = Path.GetDirectoryName(path);

                    if (cmdParams.IsExistsNamedParam("txt"))
                        CreateFile.HTMLcode(path, path2, ext);
                    else if (cmdParams.IsExistsNamedParam("css"))
                        CreateFile.HTMLcssfile(path, path2, ext);
                    else
                        CreateFile.HTMLfile(path, path2, ext);
                }

                if (cmdParams.IsExistsNamedParam("fd") && cmdParams.IsExistsNamedParam("findex"))
                {
                    pathdir = cmdParams["fd"];
                    pathIndex = cmdParams["findex"];
                    if (cmdParams.IsExistsNamedParam("l"))
                        ext = cmdParams["l"];
                    else ext = ".cs";
                    try
                    {
                        if (Directory.Exists(pathdir))
                        {
                            Search search = new Search();
                            search.GetDirectory(pathdir);
                            search.GetFile(pathdir, ext);

                            foreach (string st in search.GetDirectoryList())
                            {
                                search.GetFile(st, ext);
                            }

                            foreach (string st in search.GetFilePathList())
                            {
                                string st2 = Path.GetDirectoryName(st);
                                if (cmdParams.IsExistsNamedParam("txt"))
                                    CreateFile.HTMLcode(st, st2, ext);
                                else if (cmdParams.IsExistsNamedParam("css"))
                                    CreateFile.HTMLcssfile(st, st2, ext);
                                else
                                    CreateFile.HTMLfile(st, st2, ext);
                            }

                            CreateFile.IndexFile(search.GetFilePathList(), pathIndex, cmdParams.IsExistsNamedParam("txt"));
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("The directory could not be read:");
                        Console.WriteLine(e.Message);
                    }
                }
            }
            else
                Console.WriteLine("Ошибка при вводе параметров, обратитесь в -help");
        }
    }
}